package h_eekwan.basic;

public class J11_SungJuk_v4 {

	public static void main(String[] args) {
		// 객체지향 기법을 이용해서 성적처리 프로그램 작성
		J11SungJuk sj = new J11SungJuk();
		sj.name = "희관";
		sj.kor = 100;
		sj.eng = 77;
		sj.mat = 54;
		// 초기화가 불편
		sj = new J11SungJuk("수지",54,100,77);
		
		System.out.println(sj.name);
		System.out.println(sj.kor);
		System.out.println(sj.eng);
		System.out.println(sj.mat);
		
		System.out.println(sj.getTotal());
		System.out.println(sj.getAverage());
		
		sj.getGrade();		// void형 메서도 호출!!
		System.out.println(sj.grd);
		
	}	//main

}	//class

// 성적 데이터 : 이름, 국어, 영어, 수학, 총점, 평균
// 성적 메서드 : 총점구하기, 평균구하기, 학점구하기, 
//				결과 출력하기					
class J11SungJuk{
	String name;
	int kor;
	int eng;
	int mat;
	int tot;
	double avg;
	char grd;	
	
	public J11SungJuk(){ }	// 기본 생성자
	public J11SungJuk(
			String name,  int kor, int eng, int mat){
			this.name = name;
			this.kor = kor;
			this.eng = eng;
			this.mat = mat;
			// this 접두사는 클래스의 멤버변수를 가리킴
			// 만일, 기본생성자 없이 사용자 정의 생성자만 만든다면?
	}	//사용자 정의 생성자
	
	//	메서드 정의
/*	void getTotal(){
		tot = kor+eng+mat;
		
	}
	void getAverage() {
		avg = ( kor + eng + mat ) / 3;
	}
	void getGrade(){
		switch( (int)( kor + eng + mat ) / 3){
		case 10: 
		case 9 : grd = '수';
			break;
		}
	} */ // 메서드의 반환값 유형을 무조건 void로 정의
	int getTotal(){
		tot = kor+eng+mat;
		return tot;
	}
	double getAverage() {
		// int imsi = getTotal();
		// avg = imsi / 3;
		avg = getTotal() / 3;
		return avg;
	}
	void getGrade(){
		switch( (int)getAverage()/10
				
				){
		case 10: 
		case 9 : grd = '수';
			break;
		case 8 : grd = '우';
			break;
		case 7 : grd = '미';
			break;
		case 6 : grd = '양';
			break;
		default : grd = '가';		
		}
	}	// 메서드의 반환값 유형을 결과값의 종류에 따라 지정
	
}